import express from 'express';
import { AttendanceController } from '../controllers/attendanceController.js';

const router = express.Router();
const attendanceController = new AttendanceController();

// ========== 考勤流程相关接口 ==========
// 获取课程列表（用于选择课程）
router.get('/courses', attendanceController.getCourses.bind(attendanceController));

// 根据课程ID获取关联的班级列表
router.get('/courses/:courseId/classes', attendanceController.getClassesByCourse.bind(attendanceController));

// 根据班级ID获取学生列表
router.get('/classes/:classId/students', attendanceController.getStudentsByClass.bind(attendanceController));

// 获取所有班级及其学生数量概览（用于考勤管理首页）
router.get('/classes-overview', attendanceController.getClassesOverview.bind(attendanceController));

// 获取一节课的考勤记录表（用于编辑已有的考勤记录）
router.get('/lesson', attendanceController.getLessonAttendance.bind(attendanceController));

// 创建一节课的考勤记录（生成考勤记录表）
router.post('/create-lesson', attendanceController.createLessonAttendance.bind(attendanceController));

// ========== 考勤记录管理接口 ==========
// 获取考勤选项数据（学生、班级、教师、课程列表）
router.get('/options', attendanceController.getAttendanceOptions.bind(attendanceController));

// 获取课程时间表
router.get('/course-schedule', attendanceController.getCourseSchedule.bind(attendanceController));

// 获取考勤统计（前端调用 /attendance/stats）- 必须在 /:id 之前
router.get('/stats', attendanceController.getAttendanceStats.bind(attendanceController));

// 获取考勤详细记录（根据课程、日期、班级等条件）
router.get('/detail', attendanceController.getAttendanceDetail.bind(attendanceController));

// 获取考勤记录列表（支持分页和筛选）
router.get('/', attendanceController.getAttendances.bind(attendanceController));

// 获取单个考勤记录
router.get('/:id', attendanceController.getAttendanceById.bind(attendanceController));

// 创建考勤记录
router.post('/', attendanceController.createAttendance.bind(attendanceController));

// 批量创建考勤记录
router.post('/batch', attendanceController.createBatchAttendance.bind(attendanceController));

// 批量删除考勤记录 - 必须在 /:id 之前
router.delete('/batch/delete', attendanceController.deleteBatchAttendance.bind(attendanceController));

// 更新考勤记录
router.put('/:id', attendanceController.updateAttendance.bind(attendanceController));

// 删除考勤记录
router.delete('/:id', attendanceController.deleteAttendance.bind(attendanceController));

export default router;
